/*
 * CS_STATUS_RELEASE.cpp
 *
 *  Created on: 2014. 2. 11.
 *      Author: jjaehuny
 */



#include "../../Command.h"

#include "../../User.h"
#include "../../NLogic/Static.h"
#include "../../NLogic/Battle.h"
#include "../../NLogic/Monster.h"
#include "../../NLogic/Space.h"
#include "../../NLogic/Status.h"

namespace ProjectZ { namespace NCommand {

void Command::CS_STATUS_RELEASE(User * pUser, ::Network::Packet *pPacket)
{
	/*
	 *
	/// 상태이상 해제(부활 전투펫 구현 이슈)
	CS_STATUS_RELEASE                             0x0512
	{
			   u32 u32gid;                                       ///        GID
			   u8       u8status_type;              /// 상태이상타입
			   u8        u8sender_type;              /// 몬스터여부 (0 : 주인공 1: 몬스터 2: 주인공소환, 3: 몬스터 소환)
	}

	SN_STATUS_RELEASE                            0x0513
	{
			   u32 u32gid;                                       ///        GID
			   u8       u8status_type;              /// 상태이상타입 36번(부활)이 오면 죽음 시 부활 해제..
			   u8        u8sender_type;              /// 몬스터여부 (0 : 주인공 1: 몬스터 2: 주인공소환, 3: 몬스터 소환)
	}
	 */

	NLogic::Space * pSpace = pUser->GetSpace();
	if (NULL == pSpace)
	{
		DEBUGLOG("%s NULL == pSpace", __FUNCTION__);
		return;
	}

	NLogic::Status * pStatus = pUser->GetStatus();
	if (NULL == pStatus)
	{
		DEBUGLOG("%s NULL == pStatus", __FUNCTION__);
		return;
	}

	// 마을에서는 이 패킷이 오지 않아야 한다....

	PREPARE_PACKET;

	uint32_t u32gid = 0;
	uint8_t u8status_type = 0;
	uint8_t u8sender_type = 0;

	* pPacket >> u32gid >> u8status_type >> u8sender_type;

	if (u8status_type == static_cast<uint8_t>(NLogic::Status::StatusType::BATTLEPET_REBIRTH))
	{
		NLogic::Status::Data * pData = pStatus->GetStausData(static_cast<NLogic::Status::StatusType>(u8status_type));
		if (NULL == pData)
		{
			DEBUGLOG("%s NULL == pData", __FUNCTION__);
			return;
		}

		DEBUGLOG("BATTLEPET_REBIRTH CN_STATUS BATTLEPET_REBIRTH RELEASE GID : %d", pUser->GetUserSeq());

		pData->Clear();
	}

	::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
	* pAck <<  u32gid << u8status_type << u8sender_type;
	pAck->MakePacket(CMD_SN_STATUS_RELEASE);
	pSpace->SendAll(pAck);
}

} /*NCommand*/ } /*ProjectZ*/
